home *** CD-ROM | disk | FTP | other *** search
-
- ;; set up some simulated data
- (def x (append (iseq 1 18) (list 30 40)))
- (def y (+ x (* 2 (normal-rand 20))))
-
- ;; construct the plot
- (def myplot (plot-points x y))
-
- ;; add a new "mouse mode", with menu title, cusror and mouse method name
- (send myplot :add-mouse-mode 'point-moving
- :title "Point Moving"
- :cursor 'finger
- :click :do-point-moving)
-
- ;; add the new mouse method
- (defmeth myplot :do-point-moving (x y a b)
- (let ((p (send self :drag-point x y :draw nil)))
- (if p (send self :set-regression-line))))
-
- ;; add method for drawing the regression line for the current data
- (defmeth myplot :set-regression-line ()
- (let ((coefs (send self :calculate-coefficients)))
- (send self :clear-lines :draw nil)
- (send self :abline (select coefs 0) (select coefs 1))))
-
- ;; add method for calculating regression coefficients for current data
- (defmeth myplot :calculate-coefficients ()
- (let* ((i (iseq 0 (- (send self :num-points) 1)))
- (x (send self :point-coordinate 0 i))
- (y (send self :point-coordinate 1 i))
- (m (regression-model x y :print nil)))
- (send m :coef-estimates)))
-
- ;; add the regression line
- (send myplot :set-regression-line)
-
- ;; put the plot in "point moving" mode
- (send myplot :mouse-mode 'point-moving)
-